package cn.rkylin.oms.item.dao;

import cn.rkylin.core.IDataBaseFactory;
import cn.rkylin.oms.base.refundReasonType.domain.RdfundReasonType;
import cn.rkylin.oms.ectrade.vo.EcTradeVO;
import cn.rkylin.oms.item.domain.Item;
import cn.rkylin.oms.item.domain.SkuGroup;
import cn.rkylin.oms.item.vo.ItemVO;
import cn.rkylin.oms.item.vo.SkuVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 平台商品数据访问层
 *
 * @author wangxing
 * @version 1.0
 * @created 16-2月-2017 9:00:00
 */
@Repository(value = "itemDAO")
public class ItemDAOImpl implements IItemDAO {

    @Autowired
    protected IDataBaseFactory dao;

    /**
     * 构造函数
     */
    public ItemDAOImpl() {

    }

    /**
     * 查询平台商品
     *
     * @param itemVO
     */
    public List<ItemVO> findByWhere(ItemVO itemVO) {
        return null;
    }

    /**
     * 查询平台规格
     *
     * @param skuVO
     */
    public List<SkuVO> findByWhere(SkuVO skuVO) {
        return null;
    }

    /**
     * 获取商品明细
     */
    @Override
    public ItemVO findById(String ecItemId) throws Exception {
        List<ItemVO> resultList = dao.findList("selectByPrimaryKeyItem", ecItemId);
        if (resultList != null && resultList.size() > 0) {
            return resultList.get(0);
        }
        return null;
    }

    /**
     * 查询平台sku list根据平台商品id
     *
     * @param ecitemid 平台商品id
     * @return 平台sku list
     * @throws Exception 异常
     */
    public List<SkuVO> selectSkuByEcItemId(String ecitemid) throws Exception {
        List<SkuVO> resultList = dao.findList("selectSkuByEcItemId", ecitemid);

        return resultList;
    }

    public void updateEcSkuByGoodsSkuId(SkuVO skuVO) throws Exception {
        dao.update("updateIsGroup", skuVO);
    }

    public void updatePrjSkubyGoodsId(ItemVO itemVO) throws Exception {
        dao.update("updatePrjSkubyGoodsId", itemVO);
    }

    public void updateSkuInforbyGoodsId(SkuVO skuVO) throws Exception {
        dao.update("updateSkuInforbyGoodsId", skuVO);
    }

    public void updateSkuGroupInforbyGoodsId(SkuGroup skuGroup) throws Exception {
        dao.update("updateSkuGroupInforbyGoodsId", skuGroup);
    }

    public void updateSkuGroupbyGoodsId(SkuGroup skuGroup) throws Exception {
        dao.update("updateSkuGroupbyGoodsSkuId", skuGroup);
    }

    /**
     * 更新平台sku信息根据平台规格Id
     *
     * @param skuVo sku bean
     * @throws Exception 异常
     */
    public void updateSkubyEcSkuId(SkuVO skuVo) throws Exception {
        dao.update("updateSkubyEcSkuId", skuVo);
    }

    /**
     * 得到sku数量根据更新参数
     *
     * @param params 更新参数
     * @throws Exception 异常
     */
    public int selectAmountByEcItemId(Map<String, Object> params) throws Exception {
        List resultList = dao.findList("selectAmountByEcItemId", params);
        if (resultList != null && resultList.size() > 0) {
            return (Integer) resultList.get(0);
        }

        return 0;
    }

    /**
     * 批量修改SKU同步库存标识
     *
     * @param skuVo 平台商品SKU
     * @throws Exception 异常
     */
    public void batchUpdateAutoStock(SkuVO skuVo) throws Exception {
        dao.update("batchUpdateAutoStock", skuVo);
    }

    /**
     * 得到商品信息为库存同步
     *
     * @param params 查询参数
     * @throws Exception 异常
     */
    @SuppressWarnings("rawtypes")
    public ItemVO selectItemForSynchStock(Map<String, Object> params) throws Exception {
        List resultList = dao.findList("selectItemForSynchStock", params);
        if (resultList != null && resultList.size() > 0) {
            return (ItemVO) resultList.get(0);
        }

        return null;
    }

    /**
     * 更新关联状态根据平台商品Id
     *
     * @param itemVO item bean
     * @throws Exception 异常
     */
    public void updateRelateStatusByEcItemId(ItemVO itemVO) throws Exception {
        dao.update("updateRelateStatusByEcItemId", itemVO);
    }

    /**
     * 更新平台商品
     *
     * @param itemVO itemVO bean
     * @throws Exception 异常
     */
    public void updateItem(ItemVO itemVO) throws Exception {
        dao.update("updateItem", itemVO);
    }

    /**
     * 获取需要商品同步库存的商品
     *
     * @param itemVO 平台商品VO
     * @return 平台商品 list
     * @throws Exception 异常
     */
    public List<ItemVO> selectDataForSynchStock(ItemVO itemVO) throws Exception {
        List<ItemVO> resultList = dao.findAllList("selectDataForSynchStock", itemVO);
        return resultList;
    }

    /**
     * 查询平台sku list为同步库存
     *
     * @param itemVO 平台商品VO
     * @return 平台sku list
     * @throws Exception 异常
     */
    public List<ItemVO> selectSkuForSynchStock(ItemVO itemVO) throws Exception {
        List<ItemVO> resultList = dao.findAllList("selectSkuForSynchStock", itemVO);
        return resultList;
    }

    /**
     * 查询平台sku list为组合商品
     *
     * @param itemVO 平台商品VO
     * @return 平台sku list
     * @throws Exception 异常
     */
    public List<ItemVO> selectSkuForGroup(ItemVO itemVO) throws Exception {
        List<ItemVO> resultList = dao.findAllList("selectSkuForGroup", itemVO);
        return resultList;
    }

    /**
     * 更新
     * @param item
     * @return
     * @throws Exception
     */
    @Override
    public int updateByItemCodeSelectiveItem(Item item) throws Exception {
        return dao.update("updateByItemCodeSelectiveItem", item);
    }

}
